package admincow.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import admincow.util.ConexionBD;
import admincow.vo.EventoVO;


public class EventoDAO {
	// inicioa

	public EventoVO codigo(String auto) {
		EventoVO vi = new EventoVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt
					.executeQuery("select max(idevento)+1 as nro from evento");
		
			if (rs.next()) {
				vi.setIdevento(rs.getInt("nro"));
			}
			    System.out.println("El error esta ahi si no pasa esto");
				rs.close();
				stmt.close();
				con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vi;
	}
	
	public Collection<EventoVO> buscarPorNombre(String nombre){
		Collection<EventoVO> lista= new ArrayList<EventoVO>();
		System.out.println("Ingresando a buscar por Nom");
		try{
			String query="select evento.* from evento where nombre like '%"+nombre+"%'";
			Connection con= ConexionBD.obtenerConexion();
			Statement smt=con.createStatement();
			ResultSet rs= smt.executeQuery(query);
			while(rs.next()){
				EventoVO vo= new EventoVO();
				vo.setIdevento(rs.getInt(1));
				vo.setNombre(rs.getString(2));
				
				lista.add(vo);
			}
			rs.close();
			smt.close();
			con.close();
		}catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return lista;
	}
	public void insertar(EventoVO vo){
		System.out.println("Insertar");
		String query="INSERT INTO evento (nombre) VALUES (?)";

		
		try {
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement pstmt= con.prepareStatement(query);
			pstmt.setString(1, vo.getNombre());
			
			int i= pstmt.executeUpdate();
			if(i!=1){
				throw new SQLException("No se pudo insertar");
			}
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}

	public EventoVO obtenerEventoPorId(int idEvento){
		EventoVO vo= new EventoVO();
		System.out.println("por id");
		try {
			String query="select evento.* from evento where idevento=?";
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement stmt=con.prepareStatement(query);
			stmt.setInt(1, idEvento);
			ResultSet rs= stmt.executeQuery();
			if(rs.next()){
				vo.setIdevento(rs.getInt(1));
				vo.setNombre(rs.getString(2));
				
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return vo;
	}
	public void eliminar(int idEvento){
		System.out.println("Ingresamdo a eliminar");
		String query="DELETE FROM evento WHERE idevento=?";
		try {
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement pstmt=con.prepareStatement(query);
			pstmt.setInt(1, idEvento);
			int i= pstmt.executeUpdate();
			if(i!=1){
				throw new SQLException("No se pudo eliminar");
			}
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	public EventoVO actualizar(EventoVO vo){
		System.out.println("Ingresamdo a actualizar");
		String query="update evento set nombre=? where idevento=?";
		try {
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement pstm=con.prepareStatement(query);
			pstm.setString(1, vo.getNombre());
			pstm.setInt(2, vo.getIdevento());
			int i= pstm.executeUpdate();
			if(i!=1){
				throw new SQLException("No se pudo actualizar");
			}
			pstm.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return vo;
	}
	// final
}
